home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / php / pear / Science / Chemistry / Periodic_Table.php < prev    next >
Encoding:
PHP Script  |  2004-03-24  |  15.7 KB  |  306 lines

  1. <?php
  2. //
  3. // +----------------------------------------------------------------------+
  4. // | PHP Version 4                                                        |
  5. // +----------------------------------------------------------------------+
  6. // | Copyright (c) 1997-2003 The PHP Group                                |
  7. // +----------------------------------------------------------------------+
  8. // | This source file is subject to version 2.0 of the PHP license,       |
  9. // | that is bundled with this package in the file LICENSE, and is        |
  10. // | available at through the world-wide-web at                           |
  11. // | http://www.php.net/license/2_02.txt.                                 |
  12. // | If you did not receive a copy of the PHP license and are unable to   |
  13. // | obtain it through the world-wide-web, please send a note to          |
  14. // | license@php.net so we can mail you a copy immediately.               |
  15. // +----------------------------------------------------------------------+
  16. // | Authors: Jesus M. Castagnetto <jmcastagnetto@php.net>                |
  17. // +----------------------------------------------------------------------+
  18. //
  19. // $Id: Periodic_Table.php,v 1.4 2003/01/04 11:56:25 mj Exp $
  20. //
  21.  
  22. require_once "Science/Chemistry.php";
  23.  
  24. /** 
  25.  * Utility class that defines a Periodic Table of elements
  26.  *
  27.  * @author  Jesus M. Castagnetto <jmcastagnetto@php.net>
  28.  * @version 1.0
  29.  * @access  public
  30.  * @package Science_Chemistry
  31.  */
  32. class Science_Chemistry_Periodic_Table {
  33.  
  34.     /**
  35.      * The associative array containing the chemical elements
  36.      *
  37.      * @var     array
  38.      * @access  public
  39.      */
  40.     var $periodic_table = array();
  41.  
  42.     /**
  43.      * Returns a Science_Chemistry_Element object correspoding to the symbol (case sensitive)
  44.      *
  45.      * @param   string  $symbol
  46.      * @return  object Science_Chemistry_Element
  47.      * @access  public
  48.      */
  49.     function getElement($symbol) {
  50.         if (empty($this->periodic_table))
  51.             initTable();
  52.         $elem = $this->periodic_table[$symbol];
  53.         if (Science_Chemistry_Element::isElement($elem))
  54.             return $elem;
  55.         else
  56.             return null;
  57.     }
  58.  
  59.     /**
  60.      * Returns an array of Science_Chemistry_Element objects belonging to an element family
  61.      *
  62.      * @param   string  $family
  63.      * @return  array   Science_Chemistry_Element objects
  64.      * @access  public
  65.      */
  66.     function getElementFamily($family) {
  67.         if (empty($this->periodic_table))
  68.             initTable();
  69.         $elemlist = array();
  70.         foreach ($this->periodic_table as $sym=>$elem)
  71.             if ($elem->family == $family)
  72.                 $elemlist[$sym] = $elem;
  73.         return $elemlist;
  74.     }
  75.  
  76.     /**
  77.      * Initializes the Periodic Table array
  78.      *
  79.      * @access  public
  80.      */
  81.     function initTable() {
  82.         $periodic_table["H"] = new Science_Chemistry_Element("H", "Hydrogen",
  83.             1,1.0079, "-255.34", "-252.87", "");
  84.         $periodic_table["He"] = new Science_Chemistry_Element("He", "Helium",
  85.             2,4.00260, "< -272.2", "-268.934", "Noble gas");
  86.         $periodic_table["Li"] = new Science_Chemistry_Element("Li", "Lithium",
  87.             3,6.941, "180.54", "1342", "Alkaline");
  88.         $periodic_table["Be"] = new Science_Chemistry_Element("Be", "Beryllium",
  89.             4,9.01218, "1278", "2970", "Alkaline Earth");
  90.         $periodic_table["B"] = new Science_Chemistry_Element("B", "Boron",
  91.             5,10.81, "2079", "2550", "");
  92.         $periodic_table["C"] = new Science_Chemistry_Element("C", "Carbon",
  93.             6,12.011, "3550", "4827", "");
  94.         $periodic_table["N"] = new Science_Chemistry_Element("N", "Nitrogen",
  95.             7,14.0067, "-209.86", "-195.8", "");
  96.         $periodic_table["O"] = new Science_Chemistry_Element("O", "Oxygen",
  97.             8,15.9994, "-218.4", "-182.962", "");
  98.         $periodic_table["F"] = new Science_Chemistry_Element("F", "Fluorine",
  99.             9,18.9984, "-219.62", "-188", "Halogen");
  100.         $periodic_table["Ne"] = new Science_Chemistry_Element("Ne", "Neon",
  101.             10,20.179, "-248.67", "-246.048", "Noble gas");
  102.         $periodic_table["Na"] = new Science_Chemistry_Element("Na", "Sodium",
  103.             11,22.9898, "97.81", "882.9", "Alkaline");
  104.         $periodic_table["Mg"] = new Science_Chemistry_Element("Mg", "Magnesium",
  105.             12,24.305, "648.8", "1090", "Alkaline Earth");
  106.         $periodic_table["Al"] = new Science_Chemistry_Element("Al", "Aluminum",
  107.             13,26.9815, "660.37", "2467", "");
  108.         $periodic_table["Si"] = new Science_Chemistry_Element("Si", "Silicon",
  109.             14,28.0855, "1410", "2355", "");
  110.         $periodic_table["P"] = new Science_Chemistry_Element("P", "Phosphorus",
  111.             15,30.9738, "44.1", "280", "");
  112.         $periodic_table["S"] = new Science_Chemistry_Element("S", "Sulfur",
  113.             16,32.06, "112.8 (rhombic); 119.0 (monoclinic)", "4.6", "");
  114.         $periodic_table["Cl"] = new Science_Chemistry_Element("Cl", "Chlorine",
  115.             17,35.453, "-100.98", "-34", "Halogen");
  116.         $periodic_table["Ar"] = new Science_Chemistry_Element("Ar", "Argon",
  117.             18,39.948, "-189.2", "-185.7", "Noble gas");
  118.         $periodic_table["K"] = new Science_Chemistry_Element("K", "Potassium",
  119.             19,39.0983, "63.25", "759.9", "Alkaline");
  120.         $periodic_table["Ca"] = new Science_Chemistry_Element("Ca", "Calcium",
  121.             20,40.078, "839", "1484", "Alkaline Earth");
  122.         $periodic_table["Sc"] = new Science_Chemistry_Element("Sc", "Scandium",
  123.             21,44.9579, "1541", "2836", "Transition Metal");
  124.         $periodic_table["Ti"] = new Science_Chemistry_Element("Ti", "Titanium",
  125.             22,47.88, "1660", "3287", "Transition Metal");
  126.         $periodic_table["V"] = new Science_Chemistry_Element("V", "Vanadium",
  127.             23,50.9415, "1890", "3380", "Transition Metal");
  128.         $periodic_table["Cr"] = new Science_Chemistry_Element("Cr", "Chromium",
  129.             24,51.996, "1857", "2672", "Transition Metal");
  130.         $periodic_table["Mn"] = new Science_Chemistry_Element("Mn", "Manganese",
  131.             25,54.9380, "1244", "1962", "Transition Metal");
  132.         $periodic_table["Fe"] = new Science_Chemistry_Element("Fe", "Iron",
  133.             26,55.847, "1535", "2750", "Transition Metal");
  134.         $periodic_table["Co"] = new Science_Chemistry_Element("Co", "Cobalt",
  135.             27,58.9332, "1857", "2672", "Transition Metal");
  136.         $periodic_table["Ni"] = new Science_Chemistry_Element("Ni", "Nickel",
  137.             28,58.69, "1453", "2732", "Transition Metal");
  138.         $periodic_table["Cu"] = new Science_Chemistry_Element("Cu", "Copper",
  139.             29,63.546, "1083", "2567", "Transition Metal");
  140.         $periodic_table["Zn"] = new Science_Chemistry_Element("Zn", "Zinc",
  141.             30,65.38, "419.58", "907", "Transition Metal");
  142.         $periodic_table["Ga"] = new Science_Chemistry_Element("Ga", "Gallium",
  143.             31,69.72, "29.78", "2403", "");
  144.         $periodic_table["Ge"] = new Science_Chemistry_Element("Ge", "Germanium",
  145.             32,72.59, "937.4", "2830", "");
  146.         $periodic_table["As"] = new Science_Chemistry_Element("As", "Arsenic",
  147.             33,74.9216, "817", "613", "");
  148.         $periodic_table["Se"] = new Science_Chemistry_Element("Se", "Selenium",
  149.             34,78.96, "50 (amorphous); 217 (gray form)", "685", "");
  150.         $periodic_table["Br"] = new Science_Chemistry_Element("Br", "Bromine",
  151.             35,79.904, "-7.2", "58.78", "Halogen");
  152.         $periodic_table["Kr"] = new Science_Chemistry_Element("Kr", "Krypton",
  153.             36,83.80, "-156.6", "-152.30", "Noble gas");
  154.         $periodic_table["Rb"] = new Science_Chemistry_Element("Rb", "Rubidium",
  155.             37,85.4678, "38.89", "686", "Alkaline");
  156.         $periodic_table["Sr"] = new Science_Chemistry_Element("Sr", "Strontium",
  157.             38,87.62, "769", "1384", "Alkaline Earth");
  158.         $periodic_table["Y"] = new Science_Chemistry_Element("Y", "Yttrium",
  159.             39,88.9059, "1522", "5338", "Transition Metal");
  160.         $periodic_table["Zr"] = new Science_Chemistry_Element("Zr", "Zirconium",
  161.             40,91.22, "1852", "4377", "Transition Metal");
  162.         $periodic_table["Nb"] = new Science_Chemistry_Element("Nb", "Niobium",
  163.             41,92.9064, "2468", "4742", "Transition Metal");
  164.         $periodic_table["Mo"] = new Science_Chemistry_Element("Mo", "Molybdenum",
  165.             42,95.94, "2617", "4612", "Transition Metal");
  166.         $periodic_table["Tc"] = new Science_Chemistry_Element("Tc", "Technetium",
  167.             43,97.9072, "2172", "4877", "Transition Metal");
  168.         $periodic_table["Ru"] = new Science_Chemistry_Element("Ru", "Ruthenium",
  169.             44,101.07, "2310", "3900", "Transition Metal");
  170.         $periodic_table["Rh"] = new Science_Chemistry_Element("Rh", "Rhodium",
  171.             45,102.9055, "1966", "3727", "Transition Metal");
  172.         $periodic_table["Pd"] = new Science_Chemistry_Element("Pd", "Palladium",
  173.             46,106.42, "1554", "3140", "Transition Metal");
  174.         $periodic_table["Ag"] = new Science_Chemistry_Element("Ag", "Silver",
  175.             47,107.8682, "961.93", "2212", "Transition Metal");
  176.         $periodic_table["Cd"] = new Science_Chemistry_Element("Cd", "Cadmium",
  177.             48,112.41, "320.9", "765", "Transition Metal");
  178.         $periodic_table["In"] = new Science_Chemistry_Element("In", "Indium",
  179.             49,114.82, "156.61", "2080", "");
  180.         $periodic_table["Sn"] = new Science_Chemistry_Element("Sn", "Tin",
  181.             50,118.69, "231.97", "2270", "");
  182.         $periodic_table["Sb"] = new Science_Chemistry_Element("Sb", "Antimony",
  183.             51,121.79, "630.74", "1750", "");
  184.         $periodic_table["Te"] = new Science_Chemistry_Element("Te", "Tellurium",
  185.             52,127.60, "449.5", "4877", "");
  186.         $periodic_table["I"] = new Science_Chemistry_Element("I", "Iodine",
  187.             53,126.9045, "113.5", "184.35", "Halogen");
  188.         $periodic_table["Xe"] = new Science_Chemistry_Element("Xe", "Xenon",
  189.             54,131.29, "-111.9", "-107.1", "Noble gas");
  190.         $periodic_table["Cs"] = new Science_Chemistry_Element("Cs", "Cesium",
  191.             55,132.9054, "28.40", "669.3", "Alkaline");
  192.         $periodic_table["Ba"] = new Science_Chemistry_Element("Ba", "Barium",
  193.             56,137.33, "725", "1640", "Alkaline Earth");
  194.         $periodic_table["La"] = new Science_Chemistry_Element("La", "Lanthanum",
  195.             57,138.9055, "918", "3464", "Lanthanide");
  196.         $periodic_table["Ce"] = new Science_Chemistry_Element("Ce", "Cerium",
  197.             58,140.12, "798", "3443", "Lanthanide");
  198.         $periodic_table["Pr"] = new Science_Chemistry_Element("Pr", "Praseodymium",
  199.             59,140.9077, "931", "3520", "Lanthanide");
  200.         $periodic_table["Nd"] = new Science_Chemistry_Element("Nd", "Neodymium",
  201.             60,144.24, "1021", "3074", "Lanthanide");
  202.         $periodic_table["Pm"] = new Science_Chemistry_Element("Pm", "Promethium",
  203.             61,144.9127, "1042", "3000", "Lanthanide");
  204.         $periodic_table["Sm"] = new Science_Chemistry_Element("Sm", "Samarium",
  205.             62,150.36, "1074", "1794", "Lanthanide");
  206.         $periodic_table["Eu"] = new Science_Chemistry_Element("Eu", "Europium",
  207.             63,151.96, "822", "1527", "Lanthanide");
  208.         $periodic_table["Gd"] = new Science_Chemistry_Element("Gd", "Gadolinium",
  209.             64,157.27, "1313", "3273", "Lanthanide");
  210.         $periodic_table["Tb"] = new Science_Chemistry_Element("Tb", "Terbium",
  211.             65,158.9254, "1356", "3230", "Lanthanide");
  212.         $periodic_table["Dy"] = new Science_Chemistry_Element("Dy", "Dysprosium",
  213.             66,162.50, "1412", "2567", "Lanthanide");
  214.         $periodic_table["Ho"] = new Science_Chemistry_Element("Ho", "Holmium",
  215.             67,164.9304, "1474", "2700", "Lanthanide");
  216.         $periodic_table["Er"] = new Science_Chemistry_Element("Er", "Erbium",
  217.             68,167.26, "1529", "2868", "Lanthanide");
  218.         $periodic_table["Tm"] = new Science_Chemistry_Element("Tm", "Thulium",
  219.             69,168.9342, "1545", "1950", "Lanthanide");
  220.         $periodic_table["Yb"] = new Science_Chemistry_Element("Yb", "Ytterbium",
  221.             70,172.04, "819", "1196", "Lanthanide");
  222.         $periodic_table["Lu"] = new Science_Chemistry_Element("Lu", "Lutetium",
  223.             71,174.967, "1663", "3402", "Lanthanide");
  224.         $periodic_table["Hf"] = new Science_Chemistry_Element("Hf", "Hafnium",
  225.             72,178.49, "2227", "4602", "Transition Metal");
  226.         $periodic_table["Ta"] = new Science_Chemistry_Element("Ta", "Tantalum",
  227.             73,180.9479, "2996", "5425", "Transition Metal");
  228.         $periodic_table["W"] = new Science_Chemistry_Element("W", "Tungsten",
  229.             74,183.85, "3410", "5660", "Transition Metal");
  230.         $periodic_table["Re"] = new Science_Chemistry_Element("Re", "Rhenium",
  231.             75,186.207, "3180", "5627", "Transition Metal");
  232.         $periodic_table["Os"] = new Science_Chemistry_Element("Os", "Osmium",
  233.             76,190.2, "3054", "5027", "Transition Metal");
  234.         $periodic_table["Ir"] = new Science_Chemistry_Element("Ir", "Iridium",
  235.             77,192.22, "2410", "4130", "Transition Metal");
  236.         $periodic_table["Pt"] = new Science_Chemistry_Element("Pt", "Platinum",
  237.             78,195.08, "1772", "3827", "Transition Metal");
  238.         $periodic_table["Au"] = new Science_Chemistry_Element("Au", "Gold",
  239.             79,196.9665, "1064.4", "2808", "Transition Metal");
  240.         $periodic_table["Hg"] = new Science_Chemistry_Element("Hg", "Mercury",
  241.             80,200.59, "-38.87", "356.58", "Transition Metal");
  242.         $periodic_table["Tl"] = new Science_Chemistry_Element("Tl", "Thallium",
  243.             81,204.383, "303.5", "1457", "");
  244.         $periodic_table["Pb"] = new Science_Chemistry_Element("Pb", "Lead",
  245.             82,207.2, "327.502", "1740", "");
  246.         $periodic_table["Bi"] = new Science_Chemistry_Element("Bi", "Bismuth",
  247.             83,208.9804, "271.3", "1560", "");
  248.         $periodic_table["Po"] = new Science_Chemistry_Element("Po", "Polonium",
  249.             84,208.9824, "254", "962", "");
  250.         $periodic_table["At"] = new Science_Chemistry_Element("At", "Astatine",
  251.             85,209.9871, "302", "337", "Halogen");
  252.         $periodic_table["Rn"] = new Science_Chemistry_Element("Rn", "Radon",
  253.             86,222.0176, "-71", "-62", "Noble gas");
  254.         $periodic_table["Fr"] = new Science_Chemistry_Element("Fr", "Francium",
  255.             87,223.0197, "27", "677", "Alkaline");
  256.         $periodic_table["Ra"] = new Science_Chemistry_Element("Ra", "Radium",
  257.             88,226.0254, "700", "1140", "Alkaline Earth");
  258.         $periodic_table["Ac"] = new Science_Chemistry_Element("Ac", "Actinium",
  259.             89,227.0278, "1050", "3200", "Actinide");
  260.         $periodic_table["Th"] = new Science_Chemistry_Element("Th", "Thorium",
  261.             90,232.0381, "1750", "3800", "Actinide");
  262.         $periodic_table["Pa"] = new Science_Chemistry_Element("Pa", "Protactinium",
  263.             91,231.0359, "1600", "unknown", "Actinide");
  264.         $periodic_table["U"] = new Science_Chemistry_Element("U", "Uranium",
  265.             92,238.0289, "1132", "3818", "Actinide");
  266.         $periodic_table["Np"] = new Science_Chemistry_Element("Np", "Neptunium",
  267.             93,237.0482, "640", "3902", "Actinide");
  268.         $periodic_table["Pu"] = new Science_Chemistry_Element("Pu", "Plutonium",
  269.             94,244.0642, "641", "3232", "Actinide");
  270.         $periodic_table["Am"] = new Science_Chemistry_Element("Am", "Americium",
  271.             95,243.0614, "994", "2607", "Actinide");
  272.         $periodic_table["Cm"] = new Science_Chemistry_Element("Cm", "Curium",
  273.             96,247.0703, "1340", "unknown", "Actinide");
  274.         $periodic_table["Bk"] = new Science_Chemistry_Element("Bk", "Berkelium",
  275.             97,247.0703, "unknown", "unknown", "Actinide");
  276.         $periodic_table["Cf"] = new Science_Chemistry_Element("Cf", "Californium",
  277.             98,251.0796, "unknown", "unknown", "Actinide");
  278.         $periodic_table["Es"] = new Science_Chemistry_Element("Es", "Einsteinium",
  279.             99,252.083, "unknown", "unknown", "Actinide");
  280.         $periodic_table["Fm"] = new Science_Chemistry_Element("Fm", "Fermium",
  281.             100,257.0951, "unknown", "unknown", "Actinide");
  282.         $periodic_table["Md"] = new Science_Chemistry_Element("Md", "Mendelevium",
  283.             101,258.10, "unknown", "unknown", "Actinide");
  284.         $periodic_table["No"] = new Science_Chemistry_Element("No", "Nobelium",
  285.             102,259.1009, "unknown", "unknown", "Actinide");
  286.         $periodic_table["Lr"] = new Science_Chemistry_Element("Lr", "Lawrencium",
  287.             103,262.11, "unknown", "unknown", "Actinide");
  288.         $periodic_table["Unq (Rf)"] = new Science_Chemistry_Element("Unq (Rf)", "Unnilquadium (Rutherfordium)",
  289.             104,261.11, "unknown", "unknown", "");
  290.         $periodic_table["Unp (Db)"] = new Science_Chemistry_Element("Unp (Db)", "Unnilpentium (Dubnium)",
  291.             105,262.114, "unknown", "unknown", "");
  292.         $periodic_table["Unh (Sg)"] = new Science_Chemistry_Element("Unh (Sg)", "Unnilhexium (Seaborgium)",
  293.             106,263.118, "unknown", "unknown", "");
  294.         $periodic_table["Uns (Bh)"] = new Science_Chemistry_Element("Uns (Bh)", "Unnilseptium (Bohrium)",
  295.             107,262.12, "unknown", "unknown", "");
  296.         $periodic_table["Uno (Hs)"] = new Science_Chemistry_Element("Uno (Hs)", "Unniloctium (Hassium)",
  297.             108,-1, "unknown", "unknown", "");
  298.         $periodic_table["Une (Mt)"] = new Science_Chemistry_Element("Une (Mt)", "Unnilennium (Meitnerium)",
  299.             109,-1, "unknown", "unknown", "");
  300.     }
  301.     
  302. } // end of Science_Chemistry_Periodic_Table
  303.  
  304. // vim: expandtab: ts=4: sw=4
  305. ?>
  306.